class_name GameEnum
extends Node

################################# GameManager #################################
enum GameState
{
	Null,
	MainMenu,
	Hall,
	Loading,
	Gaming,
	Pausing,
	GameOver,
	Transition, # 用于诸如过场动画之类的播放
	DisableInput, # 禁止输入
}
enum GameMode
{
	Dev,
	Test,
	OfficialVersion,
}
###############################################################################

################################# BaseView #################################
enum OpenMode
{
	ExcludeLessPriority,
	ExcludeLessEqualPriority,
	ExcludeEqualPriority,
	ExcludeGreaterPriority,
	ExcludeGreaterEqualPriority,
	ExcludeNone,
	ExcludeAll,
}
enum ReopenMode
{
	Forbidden,Reopen
}
enum AudioMode
{
	None,Open,Close,All
}
enum ViewState
{
	Enter,Pause,Resume,Exit
}
# View的唯一标识，新的View需要来这注册一下
enum ViewType
{
	MainMenuView,
	GamingView,
	PausingView,
	CircleBtnView,
	ComboView,
	ComboSubView,
	LoadingView,
}
###############################################################################

################################# State #################################
enum StateStatus
{
	Ready, # 已准备好，可以转换
	Excuting, # 执行中
	Waiting, # 等待中，决定延迟转换但还未转换时所处状态 
	Closed, # 已关闭，该状态无法进入
}
###############################################################################

################################# AbilityComponent #################################
enum EntityAbility
{
	Nothing = 0,
	Everything = 2**32-1, # 2^32-1
	Move = 1 << 0,
	Attack = 1 << 1,
	UseSkill = 1 << 2,
	Interact = 1 << 3,
	Flip = 1 << 4,
	Update = 1 << 5,
	Hit = 1 << 6,
	BeHit = 1 << 7,
	Recover = 1 << 8,
	SelectTarget = 1 << 9,
	BeSelect = 1 << 10,
	BeKnockback = 1 << 11,
	Control = Move|Attack|UseSkill|Interact|Flip,
}
###############################################################################

################################# HealthComponent #################################
enum HealthState
{
	Null,
	Full,
	Hurt,
	Death,
	Dead,
}
###############################################################################

################################# SlotComponent #################################
enum SlotType
{
	Head,
	Hand, # LeftHand 索引0 RightHand 索引1
	Body,
	Feet,
	Root,
	Weapon,
	Effect,
	Other,
}
###############################################################################

################################# BuffComponent #################################
enum BuffType
{
	Buff, # 增益buff
	Debuff, # 减益buff
	None, # 中性buff
}
enum BuffTag
{
	Nothing = 0,
	Everything = 4294967295, # 2^32-1
	Tag0 = 1 << 0,
	Tag1 = 1 << 1,
}
# buff冲突处理类型
enum BuffConflictResolution
{
	Combine, # 合并
	Separate, # 独立存在 
	Cover, # 覆盖
}
###############################################################################

################################# Area2DDetectComponent #################################
enum Area2DDetectorTiming
{
	Enter,
	Stay,
	Exit,
}
enum Area2DDetectorDetectRange
{
	Area,
	Body,
	AB,
}
###############################################################################

################################# CampComponent #################################
enum Camp
{
	None, # 无
	Friendly, # 友方
	Hostile, # 敌方
	Neutral, # 中立
}
###############################################################################

################################# ControllerComponent #################################
enum KeyAction
{
	MoveLeft,
	MoveRight,
	MoveUp,
	MoveDown,
	Attack,
	Skill,
	PersonSkill,
	Switch,
	Discard,
	Reload,
	Dodge,
	Interact,
	ComboView,
	CMD,
}

enum  KeyActionState
{
	Idle, # 空闲
	Pressed, # 按下
	Stay, # 保持按下
	Release, # 松开
}
###############################################################################

################################# SteeringComponent ####################################
enum DetectorType
{
	Nothing = 0,
	Everything = 2**32-1, # 2^32-1
	Target = 1 << 0,
	Obstacle = 1 << 1,
}
enum ContextBehaviorType
{
	Nothing = 0,
	Everything = 2**32-1, # 2^32-1
	Avoid = 1 << 0,
	Flee = 1 << 1,
	Seek = 1 << 2,
	Wander = 1 << 3,
	Evade = 1 << 4,
	Pursue = 1 << 5,
	Surround = 1 << 6,
	Follow = 1 << 7,
}
enum TargetDetectorTargetType
{
	Target,
	VisibleTarget,
	SameCampTarget,
}
###############################################################################

################################# BaseRoom ####################################
enum RoomType
{
	NullRoom,
	HallRoom,
	StartRoom,
	TransferRoom,
	ShopRoom,
	RewardRoom,
	EnemyRoom,
	BossRoom,
	EndRoom,
	TrainingRoom,
	DevRoom,
}
enum RoomStatus
{
	NotArrived,
	Arrived,
	End,
}
enum SpawnAreaType
{
	Rectangle,
	Circle,
}
enum RoomTileType
{
	Null,
	Undefind, # 未定义
	Path, # 道路
	NearWallTop, # 上方有墙壁
	NearWallBottom, # 下方有墙壁
	NearWallLeft, # 左方有墙壁
	NearWallRight, # 右方有墙壁
	Corner, # 角落
	Collider, # 通道内部
	DeadPoint, # 死区
	Inner, # 内部
	CorriderEntrance, # 通道口
	WallTop, # 上方墙壁
	BottomTop, # 下方墙壁
	LeftTop, # 左方墙壁
	RightTop, # 右方墙壁
}
###############################################################################

################################# BaseRoom ####################################
enum LogicalEffectTriggerType
{
	All, # 全成功
	Any, # 一个成功
	Manual, # 手动触发
}
###############################################################################

################################# EntityStateAnim_AdditionalEffect ####################################
enum EntityStateAnim_AdditionalEffect_Timing
{
	Init, # 初始化
	Enter, # 进入
	Update, # 更新
	Physics_Update, # 物理更新
	Exit, # 退出
	Time, # 根据时间
}
###############################################################################

################################# Util ####################################
enum UtilObstacleCheckRange
{
	Area,
	Body,
	AB,
}
###############################################################################
